<?php


class Rol {
    
    static $__colRoles = null;
    
    public function __construct($id, $nombre, $administracion, $catalogacion, $circulacion, $reportes, $respaldos) {
        $this->id = $id;
        $this->nombre = $nombre;
        $this->administracion = $administracion;
        $this->catalogacion = $catalogacion;
        $this->circulacion = $circulacion;
        $this->reportes = $reportes;
        $this->respaldos = $respaldos;
    }
    
    public function ToArray(){
        return array (
            'roles_id' => $this->id,
            'roles_nombre' => $this->nombre,
            'roles_administracion' => $this->administracion,
            'roles_catalogacion' => $this->catalogacion,
            'roles_circulacion' => $this->circulacion,
            'roles_reportes' => $this->reportes,
            'roles_respaldos' => $this->respaldos,
        );
    }
    
    public static function GetInstancia($id) {
        if (Rol::$__colRoles == null) {
            Rol::$__colRoles = array();
        }
        if (array_key_exists($id, Rol::$__colRoles)) {
            return Rol::$__colRoles[$id];
        } else {
            $Mod_R = new Model_Roles();
            $data = $Mod_R->GetRolById($id);
            if (count($data) > 0) {
                $row = $data[0];
                $obj_R = new Rol(
                    $row['roles_id'],
                    $row['roles_nombre'],
                    $row['roles_administracion'],
                    $row['roles_catalogacion'],
                    $row['roles_circulacion'],
                    $row['roles_reportes'],
                    $row['roles_respaldos']
                );
                Rol::$__colRoles[$obj_R->id] = $obj_R;
                return Rol::$__colRoles[$obj_R->id];
            } else {
                return null;
            }
        }
    }
    
    public static function GetRoles($like = null) {
        Rol::$__colRoles = array();
                
        $Mod_R = new Model_Roles();
        $data = $Mod_R->GetRoles($like);
        
        foreach ($data as $row) {
            $obj_R = new Rol(
                $row['roles_id'],
                $row['roles_nombre'],
                $row['roles_administracion'],
                $row['roles_catalogacion'],
                $row['roles_circulacion'],
                $row['roles_reportes'],
                $row['roles_respaldos']
            );
            Rol::$__colRoles[$obj_R->id] = $obj_R;
        }
        return Rol::$__colRoles;
    }
    
    public function GetPrivilegios() {
        ($this->administracion) ? $adm = array('allow.administracion', 1) : $adm = array('deny.administracion', 'active');
        ($this->catalogacion) ? $cat = array('allow.catalogacion', 1) : $cat = array('deny.catalogacion', 'active');
        ($this->circulacion) ? $cir = array('allow.circulacion', 1) : $cir = array('deny.circulacion', 'active');
        ($this->reportes) ? $rep = array('allow.reportes', 1) : $rep = array('deny.reportes', 'active');
        ($this->respaldos) ? $res = array('allow.respaldos', 1) : $res = array('deny.respaldos', 'active');
        ($this->reportes) ? $con = array('allow.conectividad', 1) : $con = array('deny.conectividad', 'active'); //para conectividad, se toma igual a reportes
        
        $return = array(
             strtolower($this->nombre) => array(
                $adm[0] => $adm[1],
                $cat[0] => $cat[1],
                $cir[0] => $cir[1],
                $rep[0] => $rep[1],
                $res[0] => $res[1],
                $con[0] => $con[1],
             )
        );
        
        return $return;
    }
    
    public function Guardame() {
        $Mod_R = new Model_Roles();
        return $Mod_R->Guardar($this);
    }
    
    public function Modificame($rolId) {
        $Mod_R = new Model_Roles();
        return $Mod_R->Modificar($rolId, $this);
    }
    
}
?>
